<?php
/**
 * Helpers pour les templates
 *
 * @package cass
 * @author Mickaël CASTANHEIRO <mickael.castanheiro@gmail.com>
 * @version 1.0
 */

/**
 * Affiche une URL 
 * @param Mixed paramètres pour l'uri
 */
function link_to() {
    $uri = call_user_func_array(array('\cass\Uri', 'create'), func_get_args());
    echo $uri->getLink();
}

/**
 * Retourne une URL 
 * @param Mixed paramètres pour l'uri
 */
function url_for() {
    $uri = call_user_func_array(array('\cass\Uri', 'create'), func_get_args());
    return $uri->getLink();
}

/**
 * Inclue un morceau d'exécution
 * @param String $_package Package
 * @param String $_action Action
 * @param String $_request Requête
 * @param Array  $_parameters Paramètres
 */
function include_partial() {
    $uri = call_user_func_array(array('\cass\Uri', 'create'), func_get_args());
    \cass\FrontController::getInstance()->render($uri, true);
}

/**
 * Modifie une adresse e-mail pour qu'elle soit illisible par les spammers
 * @param String $_email Adresse e-mail claire
 * @return String Adresse e-mail modifiée
 */
function email_for($_email) {
    return preg_replace(\cass\Data::regex('email'), '$1 {at} $2 {dot} $3', $_email);
}

function email_to($_email) {
    $email = email_for($_email);
    echo '<a name="email" href="mailto:' . $email . '">' . $email . '</a>';
}

/**
 * Retourne une date formée d'un datetime
 * @param <DateTime> $_datetime
 * @param Boolean Avec l'heure
 * @return String Date au format français
 */
function date_for($_datetime, $_hour=false) {
    $months = array('janiver', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre');

    if (!($_datetime instanceof DateTime)) {
        $_datetime = new DateTime;
    }

    $jour = $_datetime->format('j');
    if ($jour == 1)
        $jour = '1<sup>er</sup>';
    $mois = $months[$_datetime->format('n') - 1];
    $annee = $_datetime->format('Y');

    $return = 'le ' . $jour . ' ' . $mois . ' ' . $annee;

    if ($_hour) {
        $return .= ' à ' . $_datetime->format('H\hi');
    }

    return $return;
}

/**
 * Formate une date pour l'affichage
 * @param String $_datetime
 * @param Boolean Avec l'heure
 */
function date_to($_datetime, $_hour=false) {
    echo date_for($_datetime, $_hour);
}


/**
 * Inclue les CSS dans la page d'accueil
 * @param Array Tableau des css
 */
function include_css($_css) {
    if (is_array($_css)) {
        $cssT = array();
        foreach ($_css AS $css) {
            if (is_array($css)) {
                foreach ($css AS $css2) {                   
                    $cssT[] = str_replace('.css', '', $css2);
                }
            }
            else {
                $cssT[] = str_replace('.css', '', $css);
            }
        }
      
        $_css = str_replace('/', '__', implode(',',  $cssT)) . '.php.css';
    }

    echo '<link rel="stylesheet" type="text/css" href="' . $_css . '" />';
}

/**
 * Inclue les JS dans la page d'accueil
 * @param Array Tableau des js
 */
function include_js($_js) {
    if (is_array($_js)) {
        $jsT = array();
        foreach ($_js AS $js) {
            if (is_array($js)) {
                foreach ($js AS $js2) {
                    $jsT[] = str_replace('.js', '', $js2);
                }
            }
            else {
                $jsT[] = str_replace('.js', '', $js);
            }
        }
        $_js = str_replace('/', '__', implode(',', $jsT)) . '.php.js';
    }

    echo '<script type="text/javascript" src="' . $_js . '"></script>';
}